﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;

namespace Hyjx.FeedingService.Objects
{
    /// <summary>
    /// 上报搅拌机状态
    /// </summary>
    public class ReportMixerStatusArgs
    {
        /// <summary>
        /// 设备编码
        /// </summary>
        [JsonPropertyName("device_code")]
        public string DeviceCode { get; set; } = string.Empty;
        /// <summary>
        /// 当前工步分散设定转速（rpm）
        /// </summary>
        [JsonPropertyName("scattered_rotate_speed")]
        public short ScatteredRotateSpeed { get; set; }
        /// <summary>
        /// 当前工步分散实际转速（rpm）
        /// </summary>
        [JsonPropertyName("scattered_rotate_actual_speed")]
        public float ScatteredRotateActualSpeed { get; set; }
        /// <summary>
        /// 当前工步搅拌设定转速（rpm）
        /// </summary>
        [JsonPropertyName("stir_rotate_speed")]
        public short StirRotateSpeed { get; set; }
        /// <summary>
        /// 当前工步搅拌实际转速（rpm）
        /// </summary>
        [JsonPropertyName("stir_rotate_actual_speed")]
        public float StirRotateActualSpeed { get; set; }
        /// <summary>
        /// 当前工步设定时间（分钟）
        /// </summary>
        [JsonPropertyName("elapsed_time")]
        public short ElapsedTime { get; set; }
        /// <summary>
        /// 当前工步剩余时间（分钟）
        /// </summary>
        [JsonPropertyName("remain_time")]
        public short RemainTime { get; set; }
        /// <summary>
        /// 当前工步实际温度（℃）
        /// </summary>
        [JsonPropertyName("actual_temperature")]
        public float ActualTemperature { get; set; }
        /// <summary>
        /// 当前工步实际压力（Mpa）
        /// </summary>
        [JsonPropertyName("actual_vacuum")]
        public float ActualVacuum { get; set; }
        /// <summary>
        /// 搅拌机状态（运行/待机/故障）
        /// </summary>
        [JsonPropertyName("status")]
        public string Status { get; set; } = string.Empty;
        /// <summary>
        /// 当前工步搅拌电流
        /// </summary>
        [JsonPropertyName("stir_current")]
        public float StirCurrent { get; set; }
        /// <summary>
        /// 当前工步分散电流
        /// </summary>
        [JsonPropertyName("scattered_current")]
        public float ScatteredCurrent { get; set; }
        /// <summary>
        /// 当前工步温度设定值
        /// </summary>
        [JsonPropertyName("temperature")]
        public float Temperature { get; set; }
        /// <summary>
        /// 当前工步真空设定值
        /// </summary>
        [JsonPropertyName("vacuum")]
        public float Vacuum { get; set; }
        /// <summary>
        /// true 表示配方在运行
        /// </summary>
        [JsonPropertyName("recipe_running")]
        public bool RecipeRunning { get; set; }
        /// <summary>
        /// true 表示搅拌机正在出料到成品罐
        /// </summary>
        [JsonPropertyName("mixer_discharge")]
        public bool MixerDischarge { get; set; }
        /// <summary>
        /// true 表示负极 EC 辅料的 Mes 验证通过
        /// </summary>
        [JsonPropertyName("ec_mes_valid")]
        public bool EcMesValid { get; set; }
        /// <summary>
        /// true 表示使用 MES 模式，false 表示使用本地模式
        /// </summary>
        [JsonPropertyName("mes_mode")]
        public bool MesMode { get; set; }
        /// <summary>
        /// 当前工步号
        /// </summary>
        [JsonPropertyName("step")]
        public short Step { get; set; }
        /// <summary>
        /// 当前工步原材料代码
        /// </summary>
        [JsonPropertyName("material_code")]
        public short MaterialCode { get; set; }
        /// <summary>
        /// 当前工步材料设定重量（KG）
        /// </summary>
        [JsonPropertyName("material_weight")]
        public float MaterialWeight { get; set; }
        /// <summary>
        /// 当前工步实际加料量（KG）
        /// </summary>
        [JsonPropertyName("material_actual_weight")]
        public float MaterialActualWeight { get; set; }
        /// <summary>
        /// 当前工步状态，0：暂停，1：进行中，2：已完成，3：所有工步完成
        /// </summary>
        [JsonPropertyName("step_status")]
        public int StepStatus { get; set; }
        /// <summary>
        /// 原材料公差集
        /// </summary>
        [JsonPropertyName("tolerances")]
        public MaterialTolerance[]? Tolerances { get; set; }
    }
}
